package com.gzx.plugin.tjzy.modular.call.ht.service;

import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.gzx.plugin.tjzy.modular.call.ht.entity.GzxHtCallRecord;
import com.gzx.plugin.tjzy.modular.call.ht.entity.bo.GzxCallReportBo;
import com.gzx.plugin.tjzy.modular.call.ht.entity.bo.GzxHtCallRecordQueryBo;
import com.gzx.plugin.tjzy.modular.call.ht.entity.vo.GzxCallReportVo;
import com.gzx.plugin.tjzy.modular.call.ht.entity.vo.GzxHtCallRecordVo;
import jakarta.servlet.http.HttpServletResponse;

import java.util.List;

/**
 * @author zjt
 * @description
 * @since 2024/10/11 10:11
 */
public interface GzxHtCallRecordService {

    /**
     * 保存恒天回传的话单数据
     *
     * @param callRecordStr
     */
    void saveHtCallRecord(String callRecordStr);

    /**
     * 批量保存话单记录
     *
     * @param htCallRecordList
     */
    void asyncInsertRecord(List<GzxHtCallRecord> htCallRecordList);

    /**
     * 同步自定义时间内的恒天话单
     */
    void syncCallRecordCustomerTime();

    /**
     * 同步最近的恒天话单
     */
    void syncCallRecordLast();

    /**
     * 分页查询话单记录
     *
     * @param htCallRecordQueryBo
     * @return
     */
    Page<GzxHtCallRecordVo> pageList(GzxHtCallRecordQueryBo htCallRecordQueryBo);

    /**
     * 获取当前登录用户的恒天账号
     *
     * @return
     */
    String getHtAccount();

    void setFmPhone(String fmPhone);

    /**
     * 设置主叫号码
     *
     * @param callNumber
     */
    void setCallNumber(String callNumber);

    /**
     * 获取当前坐席的主叫号码
     *
     * @return
     */
    String getCallNumber();

    /**
     * 根据CallId保存当前登录者信息
     *
     * @param callId
     */
    void setCallUser(String callId);

    /**
     * 发送消息
     */
    void sendMessage();

    /**
     * 订阅语音文字消息
     *
     * @param agentExtNo 坐席分机号
     */
    String startListen(String agentExtNo);

    /**
     * 取消订阅语音文字消息
     *
     * @param agentExtNo 坐席分机号
     */
    String stopListen(String agentExtNo);

    /**
     * 接收语音转文字的对象
     *
     * @param reqBody
     */
    void receiveVoiceText(String reqBody);

    /**
     * 获取坐席工作报表
     *
     * @param bo
     * @return
     */
    Page<GzxCallReportVo> pageCallReport(GzxCallReportBo bo);

    /**
     * 导出数据
     *
     * @param bo
     * @param response
     * @return
     */
    void exportCallReport(GzxCallReportBo bo, HttpServletResponse response);
}
